package com.cskaoyan.javase.oop1._10packaging;

/**
 * 四类八种基本数据类型都有包装类型:
 * byte --> Byte
 * short --> Short
 * int --> Integer
 * long --> Long
 * float --> Float
 * double --> Double
 * char --> Character
 * boolean --> Boolean
 * 返回值类型void,也有包装类型
 * void --> Void
 *
 *  包装类有什么特点？
 * 在Java当中把基本数据类型，转换为其对应的包装类称之为“装箱”
 * 在Java当中把包装类，转换为其对应的基本数据类型称之为“拆箱”
 * 在Java当中装箱和拆箱，都是自动进行的。基本数据类型和它的包装类可以自由、自动得互相转换
 *
 * 自动拆装箱实际上是依赖于底层自动调用方法去实现的（具体的方法可以自行查阅一下）
 * 自动拆装箱意味着，多数情况下，基本数据类型和它的包装类可以混用（当然也有不能混用的情况）
 * 需要注意的是
 * 基本数据类型不是对象，也不会出现空指针异常
 * 包装类对象始终是一个对象，可能会出现空指针异常
 *
 * 包装类有什么用途？
 * 包装类把基本数据类型变为一个对象，并且存在自动拆装箱，有些时候这本身就是一个用途
 * 包装类当中包含了其对应基本类型的相关属性，如最大值，最小值，所占位数等等
 * 包装类作为基本数据类型对应的引用数据类型，提供了一系列实用的对象操作，如类型转换，进制转换等
 * 特殊的，集合（容器）中是不允许装基本数据类型的，可以在集合中使用对应的包装类存储基本数据类型
 *
 * @since 09:59
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        // Byte.MAX_VALUE = 127
        System.out.println(Byte.MAX_VALUE + 1);
        System.out.println(((byte) (Byte.MAX_VALUE + 1)));

        System.out.println(Short.MAX_VALUE + 1);
        System.out.println(((short) (Short.MAX_VALUE + 1)));

        // Numeric overflow in expression
        System.out.println(Long.MAX_VALUE + 1);

        int a = 10;
        Integer b = a;
        int c = b;
    }

    public static Integer getMax(int[] arr) {
        // 判断数组为null和数组长度为0
        if (arr == null || arr.length == 0) {
            return null;
        }
        // 数组正常时,返回一个正常的值.
        int max = 0;
        return max;
    }
}
